home *** CD-ROM | disk | FTP | other *** search
- /*
- File: PCCardEnablerPlugin.h
-
- Version: System 7.5 and System 8
-
- DRI: Dave Falkenburg
-
- Copyright: © 1984-1996 by Apple Computer, Inc.
- All rights reserved.
-
- Warning: *** APPLE INTERNAL USE ONLY ***
- This file may contain unreleased API's
-
- BuildInfo: Built by: Dave Falkenburg
- With Interfacer: 2.0d13 (PowerPC native)
- From: PCCardEnablerPlugin.i
- Revision: 29*
- Dated: 12/19/96
- Last change by: DRF
- Last comment: Fix typo.
-
- Bugs: Report bugs to Radar component “System Interfaces”, “Latest”
- List the version information (from above) in the Problem Description.
-
- */
- #ifndef __PCCARDENABLERPLUGIN__
- #define __PCCARDENABLERPLUGIN__
-
- #ifndef __TYPES__
- #include <Types.h>
- #endif
- #ifndef __NAMEREGISTRY__
- #include <NameRegistry.h>
- #endif
- #ifndef __INTERRUPTS__
- #include <Interrupts.h>
- #endif
- #ifndef __PCCARD__
- #include <PCCard.h>
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import on
- #endif
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=power
- /* the following contents can only be used by compilers that support PowerPC struct alignment */
-
- /* Copyright: © 1996 SystemSoft Corporation, all rights reserved. */
- /*
- ------------------------------------------------------------------------------------
- Card Services calls exported by the Family
- ------------------------------------------------------------------------------------
- */
- /* Card Services for Card Enablers*/
- extern OSStatus CSGetCardServicesInfo(UInt32 *socketCount, UInt32 *complianceLevel, UInt32 *version);
-
- /* Function prototypes for tuples calls */
- extern OSStatus CSGetFirstTuple(PCCardSocket socket, UInt32 device, PCCardTupleIterator tupleIterator, Byte desiredTuple, void *tupleData, ByteCount *tupleBufferSize, Byte *foundTuple);
-
- extern OSStatus CSGetNextTuple(PCCardTupleIterator tupleIterator, Byte desiredTuple, void *tupleData, ByteCount *tupleBufferSize, Byte *foundTuple);
-
- /* Function prototypes for window calls*/
- extern OSStatus CSRequestWindow(PCCardSocket vSocket, UInt32 device, PCCardWindowAttributes windowAttributes, PCCardAccessSpeed windowSpeed, LogicalAddress *windowBase, PCCardWindowSize *windowSize, PCCardWindowOffset *windowOffset, PCCardWindowID *requestedWindow);
-
- extern OSStatus CSReleaseWindow(PCCardWindowID windowToRelease);
-
- extern OSStatus CSModifyWindow(PCCardWindowID windowToModify, PCCardWindowType windowAttributes, PCCardAccessSpeed memorySpeed, PCCardWindowOffset *windowOffset);
-
- extern OSStatus CSGetWindowBaseAddress(PCCardWindowID window, LogicalAddress *baseAddress);
-
- /* Function prototypes for CIS calls*/
- extern OSStatus CSValidateCIS(PCCardSocket vSocket, UInt32 device, UInt32 *cisChainCount);
-
- extern OSStatus CSGetDeviceCount(PCCardSocket vSocket, UInt32 *deviceCount);
-
- /* Function prototypes for Status calls*/
- extern OSStatus CSGetStatus(PCCardSocket vSocket, UInt32 *currentState, UInt32 *changedState, PCCardVoltage *Vcc, PCCardVoltage *Vpp);
-
- /* Function prototypes for configuration calls*/
- extern OSStatus CSRequestConfiguration(PCCardSocket vSocket, UInt32 device, PCCardConfigOptions configOptions, PCCardInterfaceType socketInterface, PCCardCustomInterfaceID customInterface, PCCardVoltage vcc, PCCardVoltage vpp, PCCardIRQ IRQ, PCCardDMA DMA, UInt32 configRegBaseAddress, PCCardConfigPresentMask configRegPresentMask, PCCardFunctionConfigReg *configReg);
-
- extern OSStatus CSModifyConfiguration(PCCardSocket vSocket, UInt32 device, PCCardConfigOptions modifyAttributes, PCCardIRQ IRQ, PCCardDMA DMA, PCCardVoltage Vpp);
-
- extern OSStatus CSReleaseConfiguration(PCCardSocket vSocket, UInt32 device);
-
- extern OSStatus CSSetRingIndicate(PCCardSocket vSocket, Boolean setRingIndicate);
-
- extern OSStatus CSResetFunction(PCCardSocket vSocket, UInt32 device);
-
- extern OSStatus CSReadConfigurationRegister(PCCardSocket vSocket, UInt32 device, PCCardConfigPresentMask whichRegister, UInt32 configRegBaseAddress, UInt8 *registerValue);
-
- extern OSStatus CSWriteConfigurationRegister(PCCardSocket vSocket, UInt32 device, PCCardConfigPresentMask whichRegister, UInt32 configRegBaseAddress, UInt8 registerValue);
-
- /* Function prototypes for Client Support calls*/
- extern OSStatus CSRegisterClient(PCCardSocket vSocket, PCCardEventMask eventMask, PCCardEventHandler clientCallBack, void *clientParam, PCCardClientID *newClientID);
-
- extern OSStatus CSDeRegisterClient(PCCardClientID theClientID);
-
- extern OSStatus CSSetEventMask(PCCardClientID theClientID, PCCardEventMask newEventMask);
-
- extern OSStatus CSGetEventMask(PCCardClientID theClientID, PCCardEventMask *newEventMask);
-
- extern OSStatus CSRegisterTimer(PCCardClientID registeredClientID, PCCardTimerID *lpNewTimerID, long delay);
-
- extern OSStatus CSDeRegisterTimer(PCCardTimerID timerID);
-
- /*
- ------------------------------------------------------------------------------------
- Card Enabler Types
- ------------------------------------------------------------------------------------
- */
-
- enum {
- kUnknownDeviceType = 'unkn',
- kDisplayDeviceType = 'dspl',
- kBlockDeviceType = 'blok',
- kByteDeviceType = 'byte',
- kNetworkDeviceType = 'netw',
- kSerialDeviceType = 'ser ',
- kParallelDeviceType = 'parl',
- kMemoryDeviceType = 'mem ',
- kAIMSDeviceType = 'aims',
- kSCSIDeviceType = 'scsi'
- };
-
- typedef OSType PCDeviceType;
-
- enum {
- kAttributeType = 0,
- kMemoryType = 1,
- kIOType = 2
- };
-
- typedef UInt32 PCCardMemoryType;
-
- enum {
- kUnknown = 'unkn',
- kPCCard16 = 'pc16',
- kCardBus = 'cdbs'
- };
-
- typedef OSType PCCardArchitectureType;
- #define kNodeNameName "name"
- #define k16BitPCCardName "16bitcard"
- #define kCardbusPropertyName "cardbus"
- #define kNodeCompatiblePropertyName "compatible"
- #define kDevice_TypeName "device_type"
- #define kDriverISTPropertyName "driver-ist"
- #define kFCRAccessPropertyName "FCRAccess"
- #define kConfigRegPropertyName "ConfigRegValues"
- #define kNodeTypePropertyName "PCCardNodeType"
- #define kDeviceNumberPropertName "DeviceNumber"
- #define kSocketNumberPropertName "SocketNumber"
- /*
- ------------------------------------------------------------------------------------
- Plugin Dispatch Table
- ------------------------------------------------------------------------------------
- */
-
- enum {
- kServiceTypePCCardEnabler = 'card',
- kPCCardEnablerPluginVersion = 0x00000001,
- kPCCardEnablerPluginCurrentVersion = kPCCardEnablerPluginVersion
- };
-
- /* Card Enabler Entrypoints*/
- typedef OSStatus (*CEValidateHardwareProc)(const RegEntryID *cardRef);
- typedef OSStatus (*CEInitializeProc)(const RegEntryID *cardRef, Boolean replacingOld);
- typedef OSStatus (*CECleanupProc)(const RegEntryID *cardRef, Boolean beingReplaced);
- typedef OSStatus (*CEPowerManagementProc)(const RegEntryID *lpCardEntry, PCCardPowerOptions powerLevel);
- typedef OSStatus (*CEHandleEventProc)(const RegEntryID *cardRef, PCCardEvent theEvent);
- typedef OSStatus (*CEGetCardInfoProc)(const RegEntryID *cardRef, PCCardDevType *cardType, PCCardSubType *cardSubType, StringPtr cardName, StringPtr vendorName);
- typedef OSStatus (*CEAddCardPropertiesProc)(const RegEntryID *cardRef);
- typedef OSStatus (*CEGetDeviceCountProc)(const RegEntryID *cardRef, ItemCount *numberOfDevices);
- typedef OSStatus (*CEGetDeviceNameProc)(UInt32 socketNumber, UInt32 deviceNumber, char *deviceName);
- typedef OSStatus (*CEGetDeviceCompatibleProc)(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
- typedef OSStatus (*CEGetDeviceTypeProc)(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, PCDeviceType *lpDeviceType);
- typedef OSStatus (*CEGetDeviceTypeNameProc)(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
- typedef OSStatus (*CEAddDevicePropertiesProc)(const RegEntryID *deviceRef, UInt32 device);
- typedef OSStatus (*CEConfigureDeviceProc)(const RegEntryID *deviceRef, UInt32 deviceNumber);
- typedef OSStatus (*CEFinalizeDeviceProc)(UInt32 socket, UInt32 device, const RegEntryID *deviceRef);
- typedef OSStatus (*CEValidateCISProc)(UInt32 socket, UInt32 device, UInt32 *lpCISChainCount);
- typedef OSStatus (*CEGetFirstTupleProc)(UInt32 socket, UInt32 device, PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
- typedef OSStatus (*CEGetNextTupleProc)(PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
- struct PCCardEnablerPluginHeader {
- UInt32 pluginDispatchTableVersion;
- UInt32 reserved1;
- UInt32 reserved2;
- UInt32 reserved3;
- };
- typedef struct PCCardEnablerPluginHeader PCCardEnablerPluginHeader;
-
- struct PCCardEnablerPluginDispatchTable {
- PCCardEnablerPluginHeader header;
-
- /* General functions*/
- CEValidateHardwareProc validateHardwareProc;
- CEInitializeProc initializeProc;
- CECleanupProc cleanUpProc;
- CEPowerManagementProc setPCCardPowerLevel;
-
- /* Card functions*/
- CEHandleEventProc handleEventProc;
- CEGetCardInfoProc getCardInfoProc;
- CEAddCardPropertiesProc addCardProperties;
- CEGetDeviceCountProc getDeviceCount;
-
- /* Device functions*/
- CEGetDeviceNameProc getDeviceName;
- CEGetDeviceCompatibleProc getDeviceCompatibleNames;
- CEGetDeviceTypeProc getDeviceType;
- CEGetDeviceTypeNameProc getDeviceTypeName;
- CEAddDevicePropertiesProc addDeviceProperties;
- CEConfigureDeviceProc configureDevice;
- CEFinalizeDeviceProc finalizeDevice;
-
- /* Card Services Overrides...*/
- CEValidateCISProc validateCIS;
- CEGetFirstTupleProc getFirstTuple;
- CEGetNextTupleProc getNextTuple;
-
- /* InterruptHandlers...*/
- InterruptHandler cardInterruptHandlerFunction;
- InterruptEnabler cardInterruptEnableFunction;
- InterruptDisabler cardInterruptDisableFunction;
- };
- typedef struct PCCardEnablerPluginDispatchTable PCCardEnablerPluginDispatchTable;
-
- typedef PCCardEnablerPluginDispatchTable *PCCardEnablerPluginDispatchTablePtr;
- /*
- ------------------------------------------------------------------------------------
- PC Card Enabler Utility calls exported by the Family
- ------------------------------------------------------------------------------------
- */
- /* Generic Enabler Entrypoints*/
- extern OSStatus CEInitializeCard(const RegEntryID *cardRef, Boolean replacingOld);
-
- extern OSStatus CEFinalizeCard(const RegEntryID *cardRef, Boolean beingReplaced);
-
- extern OSStatus CEPowerManagement(const RegEntryID *lpParentID, PCCardPowerOptions powerLevel);
-
- extern OSStatus CEHandleCardEvent(const RegEntryID *cardRef, PCCardEvent lTheCardEvent);
-
- extern OSStatus CEGetCardInfo(const RegEntryID *cardRef, PCCardDevType *cardType, PCCardSubType *cardSubType, StringPtr cardName, StringPtr vendorName);
-
- extern OSStatus CEAddCardProperties(const RegEntryID *cardRef);
-
- extern OSStatus CEGetDeviceCount(const RegEntryID *cardRef, ItemCount *numberOfDevices);
-
- /* device functions*/
- extern OSStatus CEGetDeviceName(UInt32 socketNumber, UInt32 deviceNumber, char *deviceName);
-
- extern OSStatus CEGetDeviceCompatibleNames(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
-
- extern OSStatus CEGetDeviceType(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, PCDeviceType *lpDeviceType);
-
- extern OSStatus CEGetDeviceTypeName(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
-
- extern OSStatus CEAddDeviceProperties(const RegEntryID *deviceRef, UInt32 deviceNumber);
-
- extern OSStatus CEConfigureDevice(const RegEntryID *deviceRef, UInt32 deviceNumber);
-
- extern OSStatus CEFinalizeDevice(UInt32 socket, UInt32 device, const RegEntryID *deviceRef);
-
- /* RegEntryID <-> socket number mapping functions*/
- extern OSStatus CEGetSocketAndDeviceFromRegEntry(const RegEntryID *lpNode, UInt32 *lpSocket, UInt32 *lpDevice);
-
- extern OSStatus CEGetPhysicalSocketNumber(const RegEntryID *socketRef, const RegEntryID *lpDeviceEntry, UInt32 *lpPhysicalSocketNumber);
-
- /* Hardware Validation Utilities*/
- extern OSStatus CECompareCISTPL_VERS_1(const RegEntryID *cardRef, Byte majorVersion, Byte minorVersion, const char *manufacturer, const char *productName, const char *info1, const char *info2, Boolean *identical);
-
- extern OSStatus CECompareCISTPL_MANFID(const RegEntryID *cardRef, UInt16 manufacturerCode, UInt16 manufacturerInfo, Boolean *identical);
-
- extern OSStatus CECompareMemory(const RegEntryID *cardRef, PCCardMemoryType memType, ByteCount offset, ByteCount length, Byte *dataToCompare, Boolean *identical);
-
- extern OSStatus CEValidateCIS(UInt32 socket, UInt32 device, UInt32 *lpCISChainCount);
-
- extern InterruptMemberNumber CEDefaultInterruptHandler(InterruptSetMember ISTmember, void *refCon, UInt32 theIntCount);
-
- /*
- ------------------------------------------------------------------------------------
- PC Card Customization Resources
- ------------------------------------------------------------------------------------
- */
-
- enum {
- kPCCardCustomInfoResType = 'pccd',
- kPCCardCustomInfoVersion = 0
- };
-
- struct PCCardCustomResource {
- long version;
- short customIconID; /* ICN#, etc. resource ID*/
- short customStringsID; /* STR# resource ID*/
- short customTypeStringIndex;
- short customHelpStringIndex;
- OSType customAction;
- long customActionParam1;
- long customActionParam2;
- };
- typedef struct PCCardCustomResource PCCardCustomResource;
-
-
- #pragma options align=reset
- #endif /* PRAGMA_ALIGN_SUPPORTED */
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import off
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __PCCARDENABLERPLUGIN__ */
-
-